#ifndef		__GENE_HOST_INTERFACE__
#define		__GENE_HOST_INTERFACE__

#include "GeneIf.h"

class TCOM_API  IGeneHost
{
public:
	virtual ~IGeneHost()	{;}


	//
	//	add/remove gene to gene host
	//	Note that gene is organized by group id in gene
	//
	virtual bool addGene(IGeneCreateData* pDynamicData)	= 0;
	virtual	bool addGene(IGene*)	= 0;
	virtual bool rmvGene(int nGrpID) = 0;

	//
	//	register/unregister an gene event to gene host
	//	gene host will broadcast gene event only to those who has already registered it
	//
	virtual bool	addRegEvt(int nEvtGrp, int nEvt, IGene* pGene)	= 0;
	virtual bool	rmvRegEvt(int nEvtGrp, int nEvt, IGene* pGene)	= 0;

	//
	//	fire an gene event to all registered gene on current host
	//	
	virtual bool onEvent(IEvt& evt)	= 0;
};

#endif
